package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 黎鹤舞
 * Date: 2023-11-21
 * Time: 16:00
 */
public class DelOperation implements IOperation {

    public void work(BookList bookList) {
        System.out.println("删除图书:");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要删除书籍的名称:");
        String name = scanner.nextLine();

        //currentNum用来接收当前bookList上书籍的数量信息
        int currentNum = bookList.getBookNum();
        //pos用来记录要删除书籍的位置!
        int pos = -1;               //这里的-1接下来会用到！！！
        //这里可以判断一下，如果输入的书名在书架上已经有了，则提醒
        for (int i = 0; i < currentNum; i++) {
            //逐个判断name是否等于books的第i个元素
            Book book = bookList.getBooks(i);
            //如果找到了则进行删除:
            if(book.getName().equals(name)) {
                pos = i;
                break;
            }
        }

        //如果遍历完books数组，pos仍未-1 说明没有找到
        if(pos == -1) {
            System.out.println("没有找到要删除书籍的信息!!!!");
        }else {     //如果找到了进行删除操作（删除的原理就是数据的覆盖!!!）
            for (int i = pos; i < currentNum - 1; i++) {
                //注意:这里的i 是要小于currentNum -1的
                // 因为最后一个元素（第currentNUm）不需要重新赋值
                Book book = bookList.getBooks(i + 1);
                bookList.setBooks(i,book);
            }
            //但是这里第currentNum本书(数组currentNum - 1)的数据没有被删除
            //容易内存泄露!!!! 要置为空
            bookList.setBooks(currentNum - 1,null);
            //别忘了调整书架上的书籍数量
            bookList.setBookNum(currentNum-1);
        }
    }
}
